home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / bin / lesspipe < prev    next >
Text File  |  2009-04-28  |  7KB  |  281 lines

  1. #!/bin/sh
  2. #
  3. # lessfile/lesspipe
  4. # $Id: lessopen,v 1.4 1998/05/12 09:37:46 torin Exp $
  5. # Plus POSIX sh changes by Y.Dirson
  6. #
  7. # Less filter for viewing non text files.
  8. #
  9. # Written by: Behan Webster <behanw@pobox.com>
  10. # Many Modifications by Darren Stalder
  11. # Further Modifications by Thomas Schoepf <schoepf@debian.org>
  12. #
  13. # combined lessfile and lesspipe to avoid duplication of decode stage
  14. # shell is sure icky.  I'm real tempted to rewrite the whole thing in Perl
  15. #
  16. # Unfortunately, this means that I have filename dependencies sprinkled
  17. # throughout the code.  If you don't want lessfile to be called that,
  18. # you'll need to change the LESSFILE envar below.
  19. #
  20. # Usage: eval `lessfile`  or eval `lesspipe`
  21. #
  22. # less passes in:
  23. #    $1  filename to be viewed with less  (used by LESSOPEN)
  24. # and possibly (if used by lessfile)
  25. #    $2  filename that was created during LESSOPEN
  26.  
  27. TMPDIR=${TMPDIR:-/tmp}
  28. BASENAME=`basename $0`
  29. LESSFILE=lessfile
  30.  
  31. # Helper function to list contents of ISO files (CD images)
  32. iso_list() {
  33.     isoinfo -d -i "$1"
  34.     isoinfo -d -i "$1" | grep -q ^Rock\.Ridge && iiopts="$iiopts -R"
  35.     isoinfo -d -i "$1" | grep -q ^Joliet && iiopts="$iiopts -J"
  36.     echo
  37.     isoinfo -f $iiopts -i "$1"
  38. }
  39.  
  40. if [ $# -eq 1 ] ; then
  41.     # we were called as LESSOPEN
  42.  
  43.     # if the file doesn't exist, we don't do anything
  44.     if [ ! -r "$1" ]; then
  45.         exit 0
  46.     fi
  47.  
  48.     # generate filename for possible use by lesspipe
  49.     umask 077
  50.     if [ $BASENAME = $LESSFILE ]; then
  51.         TMPFILE=`tempfile -d $TMPDIR -p lessf`
  52.         if [ -z "$TMPFILE" ]; then
  53.             echo >&2 "Could not find essential program 'tempfile'. Exiting"
  54.       exit 1
  55.         fi
  56.     fi
  57.  
  58.     (
  59.         # possibly redirect stdout to a file for lessfile
  60.         if [ $BASENAME = $LESSFILE ]; then exec > $TMPFILE; fi
  61.  
  62.         # Allow for user defined filters
  63.         #if [ -x ~/.lessfilter -a -O ~/.lessfilter ]; then
  64.         if [ -x ~/.lessfilter ]; then
  65.             ~/.lessfilter "$1"
  66.             if [ $? -eq 0 ]; then
  67.                 if [ $BASENAME = $LESSFILE ]; then
  68.                     if [ -s $TMPFILE ]; then
  69.                         echo $TMPFILE
  70.                     else
  71.                         rm -f $TMPFILE
  72.                     fi
  73.                 fi
  74.                 exit 0
  75.             fi
  76.         fi
  77.  
  78.         # Decode file for less
  79.         case `echo "$1" | tr '[:upper:]' '[:lower:]'` in
  80.             *.arj)
  81.                 if [ -x "`which unarj`" ]; then unarj l "$1"
  82.                 else echo "No unarj available"; fi ;;
  83.  
  84.             *.tar.bz2)
  85.                 if [ -x "`which bunzip2`" ]; then
  86.                     bunzip2 -dc "$1" | tar tvvf -
  87.                 else echo "No bunzip2 available"; fi ;;
  88.  
  89.             *.bz)
  90.                 if [ -x "`which bunzip`" ]; then bunzip -c "$1"
  91.                 else echo "No bunzip available"; fi ;;
  92.  
  93.             *.bz2)
  94.                 if [ -x "`which bunzip2`" ]; then bunzip2 -dc "$1"
  95.                 else echo "No bunzip2 available"; fi ;;
  96.  
  97.             *.deb|*.udeb)
  98.                 echo "$1:"; dpkg --info "$1"
  99.                 echo
  100.                 echo '*** Contents:'; dpkg-deb --contents "$1"
  101.                 ;;
  102.  
  103.             *.doc)
  104.                 if [ -x "`which catdoc`" ]; then
  105.                     catdoc "$1"
  106.                 else
  107.                     # no catdoc, read normally if file is text.
  108.                     if ( file "$1" | grep ASCII 2>/dev/null >/dev/null); then
  109.                         cat "$1"
  110.                     else
  111.                         echo "No catdoc available";
  112.                     fi
  113.                 fi
  114.                 ;;
  115.  
  116.             *.gif|*.jpeg|*.jpg|*.pcd|*.png|*.tga|*.tiff|*.tif)
  117.                 if [ -x "`which identify`" ]; then
  118.                     identify "$1"
  119.                 else
  120.                     echo "No identify available"
  121.                     echo "Install ImageMagick to browse images"
  122.                 fi
  123.                 ;;
  124.  
  125.             *.iso)
  126.                 if [ -x "`which isoinfo`" ]; then iso_list "$1"
  127.                 else
  128.                     echo "No isoinfo available"
  129.                     echo "Install mkisofs to view ISO images"
  130.                 fi
  131.                 ;;
  132.  
  133.             *.bin|*.raw)
  134.                 if [ -x "`which isoinfo`" ]; then
  135.                     file "$1" | grep -q ISO\.9660 && iso_list "$1"
  136.                 else
  137.                     echo "No isoinfo available"
  138.                     echo "Install mkisofs to view ISO images"
  139.                 fi
  140.                 ;;
  141.  
  142.             *.lha|*.lzh)
  143.                 if [ -x "`which lha`" ]; then lha v "$1"
  144.                 else echo "No lha available"; fi ;;
  145.  
  146.             *.tar.lzma)
  147.                 if [ -x "`which lzma`" ]; then
  148.                     lzma -dc "$1" | tar tfvv -
  149.                 else
  150.                     echo "No lzma available"
  151.                 fi
  152.                 ;;
  153.  
  154.             *.lzma)
  155.                 if [ -x "`which lzma`" ]; then
  156.                     lzma -dc "$1"
  157.                 else
  158.                     echo "No lzma available"
  159.                 fi
  160.                 ;;
  161.  
  162.             *.pdf)
  163.                 if [ -x "`which pdftotext`" ]; then pdftotext "$1" -
  164.                 else echo "No pdftotext available"; fi ;;
  165.  
  166.             *.rar|*.r[0-9][0-9])
  167.                 if [ -x "`which rar`" ]; then rar v "$1"
  168.                 elif [ -x "`which unrar`" ]; then unrar v "$1"
  169.                 else echo "No rar or unrar available"; fi ;;
  170.  
  171.             *.rpm)
  172.                 if [ -x "`which rpm`" ]; then
  173.                     echo "$1:"; rpm -q -i -p "$1"
  174.                     echo
  175.                     echo '*** Contents:'
  176.                     rpm -q -l -p "$1"
  177.                 else echo "rpm isn't available, no query on rpm package possible"; fi ;;
  178.  
  179.             *.tar.gz|*.tgz|*.tar.z|*.tar.dz)
  180.                 tar tzvf "$1" --force-local
  181.                 ;;
  182.  
  183.             # Note that this is out of alpha order so that we don't catch
  184.             # the gzipped tar files.
  185.             *.gz|*.z|*.dz)
  186.                 gzip -dc "$1" ;;
  187.  
  188.             *.tar)
  189.                 tar tvf "$1" --force-local
  190.                 ;;
  191.  
  192.             *.jar|*.war|*.ear|*.xpi|*.zip)
  193.                 if [ -x "`which unzip`" ]; then unzip -v "$1";
  194.                 elif [ -x "`which miniunzip`" ]; then miniunzip -l "$1";
  195.                 elif [ -x "`which miniunz`" ]; then miniunz -l "$1";
  196.                 else echo "No unzip, miniunzip or miniunz available"; fi ;;
  197.  
  198.             *.7z)
  199.                 if [ -x "`which 7za`" ]; then 7za l "$1";
  200.                 else echo "No 7za available"; fi ;;
  201.  
  202.             *.zoo)
  203.                 if [ -x "`which zoo`" ]; then zoo v "$1";
  204.                 elif [ -x "`which unzoo`" ]; then unzoo -l "$1";
  205.                 else echo "No unzoo or zoo available"; fi ;;
  206.  
  207.         esac
  208.     ) 2>/dev/null
  209.  
  210.     if [ $BASENAME = $LESSFILE ]; then
  211.         if [ -s $TMPFILE ]; then
  212.             echo $TMPFILE
  213.         else
  214.             rm -f $TMPFILE
  215.         fi
  216.     fi
  217.  
  218. elif [ $# -eq 2 ] ; then
  219.     #
  220.     # we were called as LESSCLOSE
  221.     # delete the file created if we were lessfile
  222.     #
  223.     if [ $BASENAME = $LESSFILE ]; then
  224.         if [ -n "$BASH" ]; then
  225.             if [ ! -O "$2" ]; then
  226.                 echo "Error in deleting $2" > /dev/tty
  227.             fi
  228.         fi
  229.  
  230.         if [ -f "$2" ]; then
  231.             rm -f "$2"
  232.         else
  233.             echo "Error in deleting $2" > /dev/tty
  234.         fi
  235.     fi
  236.  
  237. elif [ $# -eq 0 ] ; then
  238.     #
  239.     # must setup shell to use LESSOPEN/LESSCLOSE
  240.     #
  241.     # I have no idea how some of the more esoteric shells (es, rc) do
  242.     # things. If they don't do things in a Bourne manner, send me a patch
  243.     # and I'll incorporate it.
  244.     #
  245.  
  246.     # first determine the full path of lessfile/lesspipe
  247.     # if you can determine a better way to do this, send me a patch, I've
  248.     # not shell-scripted for many a year.
  249.     FULLPATH=`cd \`dirname $0\`;pwd`/$BASENAME
  250.  
  251.     case "$SHELL" in
  252.         *csh)
  253.             if [ $BASENAME = $LESSFILE ]; then
  254.                 echo "setenv LESSOPEN \"$FULLPATH %s\";"
  255.                 echo "setenv LESSCLOSE \"$FULLPATH %s %s\";"
  256.             else
  257.                 echo "setenv LESSOPEN \"| $FULLPATH %s\";"
  258.                 echo "setenv LESSCLOSE \"$FULLPATH %s %s\";"
  259.             fi
  260.             ;;
  261.         *)
  262.             if [ $BASENAME = $LESSFILE ]; then
  263.                 echo "export LESSOPEN=\"$FULLPATH %s\";"
  264.                 echo "export LESSCLOSE=\"$FULLPATH %s %s\";"
  265.             else
  266.                 echo "export LESSOPEN=\"| $FULLPATH %s\";"
  267.                 echo "export LESSCLOSE=\"$FULLPATH %s %s\";"
  268.             fi
  269.             ;;
  270.     esac
  271.  
  272.     #echo "# If you tried to view a file with a name that starts with '#', you"
  273.     #echo "# might see this message instead of the file's contents."
  274.     #echo "# To view the contents, try to put './' ahead of the filename when"
  275.     #echo "# calling less."
  276.  
  277. else
  278.     echo "Usage: eval \`$BASENAME\`"
  279.     exit
  280. fi
  281.